/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package br.edu.fatecmm.cadastrotimes.banco;
import br.edu.fatecmm.cadastrotimes.beans.BnPais;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
 *
 * @author raphael
 */
public class PaisDAO {
    private Connection conn;
    private int id_pais;
    
    public PaisDAO() throws Exception{
        
         try{
            this.conn = ConnectionFactory.getConnection();
        }
        catch(Exception e){
            throw new Exception(e.getMessage());
        }
    }
    
    public void salvar(BnPais bnPais) throws Exception{
        PreparedStatement ps = null;
        Connection conn =  null;
        if(bnPais == null)
            throw new Exception("O valor passado não pode ser nulo");
        
        try{
            String SQL = "INSERT INTO pais(ds_pais) VALUES (?)";
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
            //ps.setInt(1, bnPais.getId_pais());
            ps.setString(1, bnPais.getDs_pais());
            ps.executeUpdate();
        }catch(SQLException sqle)
        {
            throw new Exception("Erro ao inserir dados: " + sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps);
        }
        
    }
    public void atualizar(BnPais bnPais) throws Exception
    {
        PreparedStatement ps = null;
        Connection conn = null;

        if(bnPais == null)
            throw new Exception("O valor passado não pode ser nulo");
        
        int c = bnPais.getId_pais();
        c = 6; //caso para teste

        try
        {
            String SQL = "UPDATE ligas SET ds_pais = ? WHERE id_pais = ?";
            //String SQL = "UPDATE ligas SET ds_pais = ?, WHERE id_pais = "+c;
            conn = this.conn;
            ps = conn.prepareStatement(SQL);
           // ps.setInt(1, bnPais.getId_pais());
            ps.setString(2, bnPais.getDs_pais());
            

            ps.executeUpdate();
        }
        catch(SQLException sqle)
        {
            throw new Exception("Erro ao atualizar dados: " + sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps);
        }
    }
    public List todos() throws Exception
    {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;

        try
        {
            conn = this.conn;
            ps = conn.prepareStatement("SELECT * FROM pais ORDER BY ds_pais");
            rs = ps.executeQuery();
            List<BnPais> lista = new ArrayList<BnPais>();
            while(rs.next())
            {
                int id_pais = rs.getInt("id_pais");
                String ds_pais = rs.getString("ds_pais");
                
                
                BnPais bnPais = new BnPais(id_pais,ds_pais);

                lista.add(bnPais);
            }
            return lista;
        }
        catch(SQLException sqle)
        {
            throw new Exception(sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
   }
     public BnPais procurar(int id_pais) throws Exception
    {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;

        try
        {
            conn = this.conn;
            ps = conn.prepareStatement("SELECT * FROM pais WHERE id_pais = ?");
            ps.setInt(1, id_pais);
            rs = ps.executeQuery();
            if(!rs.next())
            {
                throw new Exception("Não foi encontrado nenhum "
                        + "registro com o ID: " + id_pais);
            }

            String ds_pais = rs.getString("ds_pais");
           
            
            
            BnPais bnPais = new BnPais(id_pais, ds_pais);
            
            return bnPais;
        }
        catch(SQLException sqle)
        {
            throw new Exception(sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }
    }
     
     public BnPais procurar_string(String ds_pais) throws Exception
     {
        PreparedStatement ps = null;
        Connection conn = null;
        ResultSet rs = null;

        try
        {
            conn = this.conn;
            ps = conn.prepareStatement("SELECT * FROM pais WHERE ds_pais LIKE ?");
            ps.setString(1, ds_pais);
            rs = ps.executeQuery();
            if(!rs.next())
            {
                throw new Exception("Não foi encontrado nenhum "
                        + "registro com o ID: " + ds_pais);
            }

            //String ds_pais = rs.getString("ds_pais");           
            
            BnPais bnPais = new BnPais(id_pais, ds_pais);
            
            return bnPais;
        }
        catch(SQLException sqle)
        {
            throw new Exception(sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps, rs);
        }  
     }
      public void excluir(BnPais bnPais) throws Exception
    {
        PreparedStatement ps = null;
        Connection conn = null;

        if(bnPais == null)
        {
            throw new Exception("O valor passado não pode ser nulo");
        }

        try
        {
            conn = this.conn;
            ps = conn.prepareStatement("DELETE FROM pais WHERE id_pais = ?");
            ps.setInt(1, bnPais.getId_pais());
            ps.executeUpdate();
        }
        catch(SQLException sqle)
        {
            throw new Exception("Erro ao excluir dados: " + sqle);
        }
        finally
        {
            ConnectionFactory.closeConnection(conn, ps);
        }
    }
    
    
}
